//David Cristian
#pragma once
#pragma warning (disable:4616)
#ifndef STRICT
#define STRICT
#endif

#include "targetver.h"

#define _ATL_APARTMENT_THREADED
#define _ATL_NO_AUTOMATIC_NAMESPACE

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// some CString constructors will be explicit

#include <atlbase.h>
#include <atlcom.h>
#include <atlctl.h>

#include <shlobj.h>
#include <shobjidl.h>
#include <shellapi.h>
#include <shlwapi.h>
#include <shlguid.h>
#include <thumbcache.h>
#include <propkey.h>
#include <Strsafe.h>
using namespace ATL;

typedef CComPtr<IMalloc>	IMallocPtr;
class CAtlDllModule : public CAtlDllModuleT<CAtlDllModule>
{ 
public:
	CAtlDllModule()
		:m_allocator(NULL)
	{
		if(FAILED(::SHGetMalloc(&m_allocator)))
		{
			m_allocator = NULL;
		}

		//DebugBreak();
	}

	virtual ~CAtlDllModule()
	{
		m_allocator = NULL;
	}
	IMallocPtr		getAllocator ()
	{
		ATLASSERT(m_allocator != NULL);
		return m_allocator;
	}

private:
	IMallocPtr m_allocator;
};


extern CAtlDllModule _AtlModule;

extern const CLSID CLSID_DriveRoot;

#pragma warning (default: 2958)